package cl.vixionarios.biotika.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cl.vixionarios.biotika.dao.DBManager;
import cl.vixionarios.biotika.dao.implementations.postgresql.FarmaciaDB;
import cl.vixionarios.biotika.dao.implementations.postgresql.UrgenciaDB;
import cl.vixionarios.biotika.dao.to.FarmaciaTO;
import cl.vixionarios.biotika.dao.to.UrgenciaTO;

/**
 * Servlet implementation class ObtenerPuntos
 */
@WebServlet("/ObtenerPuntos")
public class ObtenerPuntos extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ObtenerPuntos() {
        super();        
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String xml = "";
		
		String latitud = request.getParameter("latitud");
		String longitud = request.getParameter("longitud");
		String tipo = request.getParameter("tipo");
		
		xml = 	"<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"?>" +
				"<puntos>";
		
		//origen
		String punto = "<punto>";
		punto += "<titulo>Origen</titulo>";
		punto += "<desc>Origen</desc>";
		punto += "<latitud>" +latitud+ "</latitud>";
		punto += "<longitud>" +longitud+ "</longitud>";
		punto += "</punto>";
		xml += punto;
				
		
		Connection c = DBManager.getConnection();
		if(tipo.equalsIgnoreCase("urgencia"))
		{
			UrgenciaDB urgenciaDB = new UrgenciaDB(c);
			
			List<UrgenciaTO> listaUrgencia = urgenciaDB.obtenerUrgenciasCercanas(latitud, longitud);
			
			DBManager.closeOnSuccess(c);
			
			for ( UrgenciaTO urgencia : listaUrgencia)
			{
				punto = "<punto>";
				punto += "<titulo>"+ urgencia.getNombreEstablecimiento() +"</titulo>";
				punto += "<desc>" +urgencia.getDireccionEstablecimiento()+ "</desc>";
				punto += "<latitud>" +urgencia.getLatitud()+ "</latitud>";
				punto += "<longitud>" +urgencia.getLongitud()+ "</longitud>";
				punto += "</punto>";	
			
				xml += punto;
			}
		}
		else if(tipo.equalsIgnoreCase("farmacia"))
		{
			FarmaciaDB farmaciaDB = new FarmaciaDB(c);
			
			List<FarmaciaTO> listaFarmacias = farmaciaDB.obtenerFarmaciasCercanas(latitud, longitud);
			
			DBManager.closeOnSuccess(c);
			
			for ( FarmaciaTO farmacia : listaFarmacias)
			{
				punto = "<punto>";
				punto += "<titulo>"+ farmacia.getNombre() +"</titulo>";
				punto += "<desc>" +farmacia.getHorario()+ " Fecha Hoy ("+farmacia.getDia()+"/"+farmacia.getMes()+")" +"</desc>";
				punto += "<latitud>" +farmacia.getLatitud()+ "</latitud>";
				punto += "<longitud>" +farmacia.getLongitud()+ "</longitud>";
				punto += "</punto>";	
			
				xml += punto;
			}
		}
		
		xml = xml + "</puntos>";
		PrintWriter out = response.getWriter();
	    out.println (xml);
		response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
		response.setHeader("Pragma","no-cache"); //HTTP 1.0
		response.setDateHeader("Expires", 0); //prevents caching at the proxy server
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}
